[id].vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <main>
  3. <div>
  4. <div v-if="pending">
  5. Pending...
  6. </div>
  7. <div v-else>
  8. <p>Edit :{{ file }}</p>
  9. <form @submit.prevent="" @change="onFileChange" class="my-3">
  10. <v-text-field v-model="file.name" type="text" />
  11. <v-select v-model="file.status" :items="['PENDING', 'READY', 'DELETED', 'ERROR']">
  12. </v-select>
  13. <v-btn @click="cancel" class="ma-5">Annuler</v-btn>
  14. <v-btn @click="save" class="ma-5">Enregistrer</v-btn>
  15. <v-btn @click="deleteAndGoBack" class="ma-5">Supprimer</v-btn>
  16. <v-btn @click="refresh" class="ma-5">Refresh</v-btn>
  17. <v-btn @click="goBack" class="ma-5">Retour</v-btn>
  18. </form>
  19. </div>
  20. </div>
  21. </main>
  22. </template>
  23. <script setup lang="ts">
  24. import {useEntityManager} from "~/composables/data/useEntityManager";
  25. import {computed, ComputedRef, ref, Ref} from "@vue/reactivity";
  26. import {File} from "~/models/Core/File";
  27. import {navigateTo, useRoute} from "#app";
  28. import {useEntityFetch} from "~/composables/data/useEntityFetch";
  29. const route = useRoute()
  30. const id: Ref<number> = ref(parseInt(route.params.id as string))
  31. const em = useEntityManager()
  32. const { pending, refresh } = useEntityFetch(File, id)
  33. // Get file from store
  34. const file: ComputedRef<File> = computed( () => {
  35. return em.find(File, id.value)
  36. })
  37. // Update store when form is changed
  38. const onFileChange = () => {
  39. em.save(File, file.value)
  40. }
  41. const save = async () => {
  42. await em.persist(File, file.value)
  43. }
  44. const cancel = async () => {
  45. if (em.isNewEntity(File, id.value)) {
  46. await em.delete(File, file.value)
  47. } else {
  48. em.reset(File, file.value)
  49. }
  50. }
  51. const deleteItem = async () => {
  52. await em.delete(File, file.value)
  53. }
  54. const goBack = () => {
  55. navigateTo('/poc')
  56. }
  57. const saveAndGoBack = async () => {
  58. await save()
  59. goBack()
  60. }
  61. const cancelAndGoBack = async () => {
  62. await cancel()
  63. goBack()
  64. }
  65. const deleteAndGoBack = async () => {
  66. await deleteItem()
  67. goBack()
  68. }
  69. </script>
  70. <style>
  71. </style>